from rest_framework.permissions import BasePermission

from .models import *

class WorkPermission(BasePermission):
    message = '当前用户没有该权限进行访问'

    def has_permission(self, request, view):
    #cursor.execute(
    #'select u.username,r.rolename,a.url from tb_user u INNER JOIN
    #permissionapp_roleinfo_users ru on u.id = ru.user_id INNER JOIN
    #permissionapp_roleinfo r on r.id = ru.roleinfo_id INNER JOIN
    #permissionapp_authorityinfo_roles ar on r.id = ar.roleinfo_id INNER JOIN
    #permissionapp_authorityinfo a on a.id = ar.authorityinfo_id WHERE u.username = "quan"')

        uid = request.user.id  # 获取当前用户id

        user_obj = User.objects.filter(id=uid).first()
        # 查询该用户 拥有的 所有角色
        user_role_obj = user_obj.roles.all()
        print("该用户的所有角色:", user_role_obj)

        url = request.path_info
        method = request.method
        print(url + method)

        # 查询 当前访问的路径
        url_obj = UrlInfo.objects.filter(url=url + method).first()
        print("当前路由对应的url对象", url_obj)
        if url_obj:
            # 如果存在路径信息， 获取该路径对应的 所有角色
            url_role_obj = user_obj.roles.all()
        else:
            # 不存在，即没有权限
            return False

        # 循环遍历该用户的所有角色
        for i in user_role_obj:
            # 判断该用户拥有的角色  是否 存在当前路径对应的角色中
            if i in url_role_obj:
                return True

        return False